// pages/cart/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    goods: {},
    // allSelected全选
    allSelected: true,
    // 总价
    allPrice: 0
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 获取本地的数据 goods
    const goods = wx.getStorageSync("goods");

    this.setData({
      goods: goods
    });

    // 计算全选
    this.getAllSelected();
    // 计算总价格
    this.getAllPrice();
  },

  onHide(){
    // 在页面离开后把goods数据保存到本地
    wx.setStorageSync('goods', this.data.goods);
  },

  // 计算总价格
  getAllPrice(){
    let price = 0;

    Object.values(this.data.goods).forEach(v => {
      if(v.selected){
        price += v.goods_price * v.number;
      }
    })

    this.setData({
      allPrice: price
    })
  },

  //  计算全选的状态
  getAllSelected(){
    let selected = true;
    // 重新计算全选状态的值,只要有一个商品的状态为false，全选就为false
    Object.values(this.data.goods) .forEach(v => {
      if(v.selected === false){
        selected = false;
      }
    });

    this.setData({
      allSelected: selected,
    })

    // 计算总价格
    this.getAllPrice();
  },

  changeStatus(event){
    // 获取商品id
    const {id}= event.currentTarget.dataset;
    const item = this.data.goods[id];

    item.selected = !item.selected;

    // 只有调用了setData页面才会刷新
    this.setData({
      goods: this.data.goods
    });

    //  计算全选的状态
    this.getAllSelected();
  },

  // 商品的数量加减
  handleCalc(event){

    console.log(event.currentTarget.dataset)
    // 获取商品id
    const {id, number}= event.currentTarget.dataset;
    const item = this.data.goods[id];

    item.number += +number;

    if(item.number <= 0){
      // 对话
      wx.showModal({
        title: '提示',
        content: '是否删除该商品',
        success: (res) => {
          // 如果res.confirm是true就代表点击确定
          if (res.confirm) {
            // 删除该商品，delete不会引起页面的刷新
            delete this.data.goods[id];
          } else if (res.cancel) {
            // 如果点击了取消，就把商品的数量设置为1
            item.number = 1;
          }

          // 只有调用了setData页面才会刷新
          this.setData({
            goods: this.data.goods
          });

          // 计算总价格
          this.getAllPrice()
        }
      })	
    }else{
      // 只有调用了setData页面才会刷新
      this.setData({
        goods: this.data.goods
      })

      // 计算总价格
      this.getAllPrice()
    }
  },

  // 根据输入框的值修改数量
  handleInput(event){
    // 修改的是哪个商品
    const {id} = event.currentTarget.dataset;
    const item = this.data.goods[id];

    // 获取输入框的值
    item.number = +event.detail.value;

    if(isNaN(item.number)){
      item.number = 1;
    }

    this.setData({
      goods: this.data.goods
    })

    // 计算总价格
    this.getAllPrice()
  },

  handleBlur(event){
    // 修改的是哪个商品
    const {id} = event.currentTarget.dataset;
    const item = this.data.goods[id];

    // 获取输入框的值
    item.number = +event.detail.value;

    if(item.number === 0){
      item.number = 1;
    }

    this.setData({
      goods: this.data.goods
    })
  },

  // 点击全选按钮触发的事件
  changeAllSelect(){
    Object.values(this.data.goods).forEach(v => {
      v.selected = !this.data.allSelected;
    })

    this.setData({
      goods: this.data.goods,
      allSelected: !this.data.allSelected
    })

    // 计算总价格
    this.getAllPrice();
  }
})